package com.kxmall.huishou.service;

import com.kxmall.huishou.domain.HsAppointmentOrder;
import com.kxmall.huishou.domain.vo.HsAppointmentOrderVo;
import com.kxmall.huishou.domain.bo.HsAppointmentOrderBo;
import com.kxmall.common.core.page.TableDataInfo;
import com.kxmall.common.core.domain.PageQuery;
import com.kxmall.rider.domain.vo.HsRiderStatisticsVo;

import java.util.Collection;
import java.util.Date;
import java.util.List;

/**
 * 回收预约订单信息Service接口
 *
 * @author kxmall
 * @date 2023-11-23
 */
public interface IHsAppointmentOrderService {

    /**
     * 查询回收预约订单信息
     */
    HsAppointmentOrderVo queryById(Long id);

    /**
     * 查询回收预约订单信息列表
     */
    TableDataInfo<HsAppointmentOrderVo> queryPageList(HsAppointmentOrderBo bo, PageQuery pageQuery);

    TableDataInfo<HsAppointmentOrderVo> queryPageLists(HsAppointmentOrderBo bo, PageQuery pageQuery);

    /**
     * 查询回收预约订单信息列表
     */
    List<HsAppointmentOrderVo> queryList(HsAppointmentOrderBo bo);

    /**
     * 新增回收预约订单信息
     */
    Boolean insertByBo(HsAppointmentOrderBo bo);

    /**
     * 修改回收预约订单信息
     */
    Boolean updateByBo(HsAppointmentOrderBo bo);

    /**
     * 校验并批量删除回收预约订单信息信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    Boolean cancelById(Long id);

    Boolean dealOrderByRider(HsAppointmentOrder appointmentOrder);

    List<HsAppointmentOrderVo> queryListByOverTime();

    /**
     * 修改回收预约订单信息
     */
    Boolean updateById(HsAppointmentOrderBo bo);

    HsRiderStatisticsVo riderStatistics();

    Long countMinuteByRiderId(Long riderId);

    Long countOrderByRiderId(Long riderId, List<Long> statusList, Date startTime, Date endTime);

    TableDataInfo<HsAppointmentOrderVo> queryPageListByStatus(HsAppointmentOrderBo bo, PageQuery pageQuery);
}
